Micron Document
πŸŽ–οΈGitΠ―Ρ€Π°πŸŽ–οΈ


Displaying Rendered β€’ View raw β€’ Download

specs/20260520-153449-node-list-context-menu/quickstart.md bd2863243bab6eb213401d949839a2bc74dde7e2 (bd286324) Text, 2.51 KB

Quickstart: Node List Context Menu Alignment

What This Feature Does

Aligns the node list long-press context menu to the canonical cross-platform order and adds two new quick-access actions (Message, Trace Route).

Key Files to Modify

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ File β”‚ Change β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ T383838feature/node/src/commonMain/.../component/NodeContextMenu.kt β”‚ Reorder items, add MessageM… β”‚
β”‚ T383838feature/node/src/commonMain/.../list/NodeListScreen.kt β”‚ Wire T383838onMessage and T383838onTraceR… β”‚
β”‚ T383838feature/node/src/commonMain/.../list/NodeListViewModel.kt β”‚ Add T383838traceRouteNode(node) an… β”‚
β”‚ T383838core/resources/src/commonMain/composeResources/values/strings.xml β”‚ Add T383838trace_route string reso… β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Implementation Steps (High Level)

1. Add string resource: Add T383838<string name="trace_route">Trace Route</string> to T383838strings.xml
2. Run sort-strings: T383838python3 scripts/sort-strings.py
3. Add ViewModel methods: Inject T383838NodeRequestActions into T383838NodeListViewModel, add T383838traceRouteNode() and T383838getDirectMessageRoute() methods
4. Add new menu items: Create T383838MessageMenuItem and T383838TraceRouteMenuItem composables in T383838NodeContextMenu.kt
5. Reorder menu: Arrange items as Favorite β†’ Mute β†’ Message β†’ TraceRoute | Ignore β†’ Remove
6. Change mute label: Replace T383838Res.string.mute_always with T383838Res.string.mute_notifications
7. Update NodeContextMenu signature: Add T383838onMessage and T383838onTraceRoute parameters
8. Wire in NodeListScreen: Pass new callbacks from ViewModel to NodeContextMenu
9. Verify: Run T383838./gradlew spotlessApply spotlessCheck detekt :feature:node:allTests

Verification Commands

T282828
T8b949e# Full verification for touched modules
./gradlew spotlessApply spotlessCheck detekt :feature:node:allTests :core:resources:allTests

T8b949e# Build check (all platforms)
./gradlew assembleDebug kmpSmokeCompile

T8b949e# After push
gh pr checks <PR>


Important Notes

β€’ The local node (self) context menu suppression is already implemented β€” no changes needed
β€’ T383838Res.string.message ("Message") and T383838Res.string.mute_notifications ("Mute notifications") already exist
β€’ T383838MeshtasticIcons.Message and T383838MeshtasticIcons.Route already exist
β€’ T383838NodeMenuAction.DirectMessage and T383838NodeMenuAction.TraceRoute already exist in the sealed class
β€’ T383838NodeRequestActions.requestTraceroute() already exists β€” just needs to be injected into T383838NodeListViewModel

Served by rngit 1.5.0 - Generated in 0.04s